home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1993 April: Penguin on DISC / ADC Developer CD (1993-04) (''Penguin On DISC'')_iso / Dev.CD Apr 93.iso / Utilities / MPW Interfaces 7.1 Beta / CIncludes / Script.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-08-28  |  39.9 KB  |  1,185 lines  |  [TEXT/MPS ]

  1.  
  2. /************************************************************
  3.  
  4. Created: Saturday, July 27, 1991 at 6:16 PM
  5.  Script.h
  6.  C Interface to the Macintosh Libraries
  7.  
  8.  
  9.   Copyright Apple Computer, Inc. 1986-1991
  10.   All rights reserved
  11.  
  12. *** Warning: This is an beta version of the Interfaces for Cube-E. 
  13. ***          Things may change.  Caveat Programmer.
  14.  
  15.  
  16. */
  17.  
  18.  
  19. #ifndef __SCRIPT__
  20. #define __SCRIPT__
  21.  
  22. #ifndef __TYPES__
  23. #include <Types.h>
  24. #endif
  25.  
  26. #ifndef __OSUTILS__
  27. #include <OSUtils.h>
  28. #endif
  29.  
  30.  
  31. enum {
  32.  
  33.  
  34. /* Script System constants */
  35.  smSystemScript = -1,                /*designates system script.*/
  36.  smCurrentScript = -2,                /*designates current font script.*/
  37.  smAllScripts = -3,                    /*designates any script    <39>*/
  38.  
  39.  smRoman = 0,                        /*Roman*/
  40.  smJapanese = 1,                    /*Japanese*/
  41.  smTradChinese = 2,                    /*Traditional Chinese*/
  42.  smKorean = 3,                        /*Korean*/
  43.  smArabic = 4,                        /*Arabic*/
  44.  smHebrew = 5,                        /*Hebrew*/
  45.  smGreek = 6,                        /*Greek*/
  46.  smCyrillic = 7,                    /*Cyrillic*/
  47.  smRSymbol = 8,                        /*Right-left symbol*/
  48.  smDevanagari = 9,                    /*Devanagari*/
  49.  smGurmukhi = 10,                    /*Gurmukhi*/
  50.  smGujarati = 11,                    /*Gujarati*/
  51.  smOriya = 12,                        /*Oriya*/
  52.  smBengali = 13,                    /*Bengali*/
  53.  smTamil = 14,                        /*Tamil*/
  54.  smTelugu = 15,                        /*Telugu*/
  55.  smKannada = 16,                    /*Kannada/Kanarese*/
  56.  smMalayalam = 17                    /*Malayalam*/
  57. };
  58. enum {
  59.  smSinhalese = 18,                    /*Sinhalese*/
  60.  smBurmese = 19,                    /*Burmese*/
  61.  smKhmer = 20,                        /*Khmer/Cambodian*/
  62.  smThai = 21,                        /*Thai*/
  63.  smLaotian = 22,                    /*Laotian*/
  64.  smGeorgian = 23,                    /*Georgian*/
  65.  smArmenian = 24,                    /*Armenian*/
  66.  smSimpChinese = 25,                /*Simplified Chinese*/
  67.  smTibetan = 26,                    /*Tibetan*/
  68.  smMongolian = 27,                    /*Mongolian*/
  69.  smGeez = 28,                        /*Geez/Ethiopic*/
  70.  smEthiopic = 28,                    /*Synonym for smGeez*/
  71.  smEastEurRoman = 29,                /*Synonym for smSlavic*/
  72.  smVietnamese = 30,                    /*Vietnamese*/
  73.  smExtArabic = 31,                    /*extended Arabic*/
  74.  smUninterp = 32,                    /*uninterpreted symbols, e.g. palette symbols*/
  75.  smKlingon = 32,                    /*Klingon*/                                        /*<45>*/
  76.  
  77. /*Obsolete names for script systems (kept for backward compatibility)*/
  78.  smChinese = 2,                        /*(use smTradChinese or smSimpChinese)*/
  79.  smRussian = 7,                        /*(old name for smCyrillic)*/
  80.  
  81. /* smMaldivian = 25;         (no more smMaldivian!)*/
  82.  smAmharic = 28,                    /*(old name for smGeez)*/
  83.  smSlavic = 29                        /*(old name for smEastEurRoman)*/
  84. };
  85. enum {
  86.  smSindhi = 31,                        /*(old name for smExtArabic)*/
  87.  
  88. /* Calendar Codes */
  89.  calGregorian = 0,
  90.  calArabicCivil = 1,
  91.  calArabicLunar = 2,
  92.  calJapanese = 3,
  93.  calJewish = 4,
  94.  calCoptic = 5,
  95.  calPersian = 6,
  96.  
  97. /* Integer Format Codes */
  98.  intWestern = 0,
  99.  intArabic = 1,
  100.  intRoman = 2,
  101.  intJapanese = 3,
  102.  intEuropean = 4,
  103.  intOutputMask = 0x8000,
  104.  
  105. /* CharByte byte types */
  106.  smSingleByte = 0,
  107.  smFirstByte = -1,
  108.  smLastByte = 1,
  109.  smMiddleByte = 2,
  110.  
  111. /* CharType field masks */
  112.  smcTypeMask = 0x000F,
  113.  smcReserved = 0x00F0
  114. };
  115. enum {
  116.  smcClassMask = 0x0F00,
  117.  smcOrientationMask = 0x1000,        /*two-byte script glyph orientation*/
  118.  smcRightMask = 0x2000,
  119.  smcUpperMask = 0x4000,
  120.  smcDoubleMask = 0x8000,
  121.  
  122. /* Basic CharType character types */
  123.  smCharPunct = 0x0000,
  124.  smCharAscii = 0x0001,
  125.  smCharEuro = 0x0007,
  126.  smCharExtAscii = 0x0007,            /* More correct synonym for smCharEuro */
  127.  
  128. /* Additional CharType character types for script systems */
  129.  smCharKatakana = 0x0002,            /*Japanese Katakana*/
  130.  smCharHiragana = 0x0003,            /*Japanese Hiragana*/
  131.  smCharIdeographic = 0x0004,        /*Hanzi, Kanji, Hanja*/
  132.  smCharTwoByteGreek = 0x0005,        /*2-byte Greek in Far East systems*/
  133.  smCharTwoByteRussian = 0x0006,        /*2-byte Cyrillic in Far East systems*/
  134.  smCharBidirect = 0x0008,            /*Arabic/Hebrew*/
  135.  smCharContextualLR = 0x0009,        /*Contextual left-right: Thai, Indic scripts*/        /*<58>*/
  136.  smCharNonContextualLR = 0x000A,    /*Non-contextual left-right: Cyrillic, Greek*/        /*<58>*/
  137.  smCharHangul = 0x000C,                /*Korean Hangul*/
  138.  smCharJamo = 0x000D,                /*Korean Jamo*/
  139.  smCharBopomofo = 0x000E,            /*Chinese Bopomofo*/    
  140.  
  141. /* old names for some of above, for backward compatibility */
  142.  smCharFISKana = 0x0002,            /*Katakana*/
  143.  smCharFISGana = 0x0003,            /*Hiragana*/
  144.  smCharFISIdeo = 0x0004                /*Hanzi, Kanji, Hanja*/
  145. };
  146. enum {
  147.  smCharFISGreek = 0x0005,            /*2-byte Greek in Far East systems*/
  148.  smCharFISRussian = 0x0006,            /*2-byte Cyrillic in Far East systems*/
  149.  
  150. /* CharType classes for punctuation (smCharPunct) */
  151.  smPunctNormal = 0x0000,
  152.  smPunctNumber = 0x0100,
  153.  smPunctSymbol = 0x0200,
  154.  smPunctBlank = 0x0300,
  155.  
  156. /* Additional CharType classes for punctuation in two-byte systems */
  157.  smPunctRepeat = 0x0400,            /* repeat marker */
  158.  smPunctGraphic = 0x0500,            /* line graphics */
  159.  
  160. /* CharType Katakana and Hiragana classes for two-byte systems */
  161.  smKanaSmall = 0x0100,                /*small kana character*/
  162.  smKanaHardOK = 0x0200,                /*can have dakuten*/
  163.  smKanaSoftOK = 0x0300,                /*can have dakuten or han-dakuten*/
  164.  
  165. /* CharType Ideographic classes for two-byte systems */
  166.  smIdeographicLevel1 = 0x0000,        /*level 1 char*/
  167.  smIdeographicLevel2 = 0x0100,        /*level 2 char*/
  168.  smIdeographicUser = 0x0200,        /*user char*/
  169.  
  170. /* old names for above, for backward compatibility */
  171.  smFISClassLvl1 = 0x0000,            /*level 1 char*/
  172.  smFISClassLvl2 = 0x0100,            /*level 2 char*/
  173.  smFISClassUser = 0x0200,            /*user char*/
  174.  
  175. /* CharType Jamo classes for Korean systems */
  176.  smJamoJaeum = 0x0000,                /*simple consonant char*/
  177.  smJamoBogJaeum = 0x0100,            /*complex consonant char*/
  178.  smJamoMoeum = 0x0200                /*simple vowel char*/
  179. };
  180. enum {
  181.  smJamoBogMoeum = 0x0300,            /*complex vowel char*/
  182.  
  183. /* CharType glyph orientation for two-byte systems */
  184.  smCharHorizontal = 0x0000,            /* horizontal character form, or for both */
  185.  smCharVertical = 0x1000,            /* vertical character form */
  186.  
  187. /* CharType directions */
  188.  smCharLeft = 0x0000,
  189.  smCharRight = 0x2000,
  190.  
  191. /* CharType case modifers */
  192.  smCharLower = 0x0000,
  193.  smCharUpper = 0x4000,
  194.  
  195. /* CharType character size modifiers (1 or multiple bytes). */
  196.  smChar1byte = 0x0000,
  197.  smChar2byte = 0x8000,
  198.  
  199. /* Char2Pixel directions */
  200.  smLeftCaret = 0,                    /*Place caret for left block*/
  201.  smRightCaret = -1,                    /*Place caret for right block*/
  202.  smHilite = 1,                        /*Direction is TESysJust*/
  203.  
  204. /* Transliterate target types for Roman */
  205.  smTransAscii = 0,                    /*convert to ASCII*/
  206.  smTransNative = 1,                    /*convert to font script*/
  207.  smTransCase = 0xFE,                /*convert case for all text*/
  208.  smTransSystem = 0xFF,                /*convert to system script*/
  209.  
  210. /* Transliterate target types for two-byte scripts */
  211.  smTransAscii1 = 2,                    /*1-byte Roman*/
  212.  smTransAscii2 = 3,                    /*2-byte Roman*/
  213.  smTransKana1 = 4,                    /*1-byte Japanese Katakana*/
  214.  smTransKana2 = 5                    /*2-byte Japanese Katakana*/
  215. };
  216. enum {
  217.  smTransGana2 = 7,                    /*2-byte Japanese Hiragana (no 1-byte Hiragana)*/
  218.  smTransHangul2 = 8,                /*2-byte Korean Hangul*/
  219.  smTransJamo2 = 9,                    /*2-byte Korean Jamo*/
  220.  smTransBopomofo2 = 10,                /*2-byte Chinese Bopomofo*/
  221.  
  222. /* Transliterate target modifiers */
  223.  smTransLower = 0x4000,                /*target becomes lowercase*/
  224.  smTransUpper = 0x8000,                /*target becomes uppercase*/
  225.  
  226. /* Transliterate resource format numbers */
  227.  smTransRuleBaseFormat = 1,            /*Rule based trsl resource format */
  228.  smTransHangulFormat = 2,            /*Table based Hangul trsl resource format*/
  229.  
  230. /* Transliterate property flags */
  231.  smTransPreDoubleByting = 1,        /*Convert all text to double byte before transliteration*/
  232.  smTransPreLowerCasing = 2,            /*Convert all text to lower case before transliteration*/
  233.   
  234. /* Transliterate source mask - general */
  235.  smMaskAll = 0xFFFFFFFF,            /*Convert all text*/
  236.  
  237. /* Transliterate source masks */
  238.  smMaskAscii = 0x00000001,            /*2^smTransAscii*/
  239.  smMaskNative = 0x00000002,            /*2^smTransNative*/
  240.  
  241. /* Transliterate source masks for two-byte scripts */
  242.  smMaskAscii1 = 0x00000004,            /*2^smTransAscii1*/
  243.  smMaskAscii2 = 0x00000008,            /*2^smTransAscii2*/
  244.  smMaskKana1 = 0x00000010,            /*2^smTransKana1*/
  245.  smMaskKana2 = 0x00000020,            /*2^smTransKana2*/
  246.  smMaskGana2 = 0x00000080,            /*2^smTransGana2*/
  247.  smMaskHangul2 = 0x00000100,        /*2^smTransHangul2*/
  248.  smMaskJamo2 = 0x00000200,            /*2^smTransJamo2*/
  249.  smMaskBopomofo2 = 0x00000400,        /*2^smTransBopomofo2*/
  250.  
  251. /* Result values from GetEnvirons, SetEnvirons, GetScript and SetScript calls. */
  252.  smNotInstalled = 0,                /*routine not available in script*/
  253.  smBadVerb = -1,                    /*Bad verb passed to a routine*/
  254.  smBadScript = -2                    /*Bad script code passed to a routine*/
  255. };
  256. enum {
  257.  
  258. /* Values for script redraw flag. */
  259.  smRedrawChar = 0,                    /*Redraw character only*/
  260.  smRedrawWord = 1,                    /*Redraw entire word (2-byte systems)*/
  261.  smRedrawLine = -1,                    /*Redraw entire line (bidirectional systems)*/
  262.  
  263. /* GetEnvirons and SetEnvirons verbs */
  264.  smVersion = 0,                        /*Script Manager version number*/
  265.  smMunged = 2,                        /*Globals change count*/
  266.  smEnabled = 4,                        /*Count of enabled scripts, incl Roman*/
  267.  smBidirect = 6,                    /*At least one bidirectional script*/
  268.  smFontForce = 8,                    /*Force font flag*/
  269.  smIntlForce = 10,                    /*Force intl flag*/
  270.  smForced = 12,                        /*Script was forced to system script*/
  271.  smDefault = 14,                    /*Script was defaulted to Roman script*/
  272.  smPrint = 16,                        /*Printer action routine*/
  273.  smSysScript = 18,                    /*System script*/
  274.  smLastScript = 20,                    /*Last keyboard script*/
  275.  smKeyScript = 22,                    /*Keyboard script*/
  276.  smSysRef = 24,                        /*System folder refNum*/
  277.  smKeyCache = 26,                    /*obsolete*/
  278.  smKeySwap = 28,                    /*Swapping table handle*/
  279.  smGenFlags = 30,                    /*General flags long*/
  280.  smOverride = 32                    /*Script override flags*/
  281. };
  282. enum {
  283.  smCharPortion = 34,                /*Ch vs SpExtra proportion*/
  284.  
  285. /* New for System 7.0: */
  286.  smDoubleByte = 36,                    /*Flag for double-byte script installed*/
  287.  smKCHRCache = 38,                    /*Returns pointer to KCHR cache*/
  288.  smRegionCode = 40,                    /*Returns current region code (verXxx)*/
  289.  smKeyDisabState = 42,                /*Returns current keyboard disable state*/            /*<47>*/
  290.  
  291. /* GetScript and SetScript verbs.
  292. Note: Verbs private to script systems are negative, while
  293. those general across script systems are non-negative. */
  294.  smScriptVersion = 0,                /*Script software version*/
  295.  smScriptMunged = 2,                /*Script entry changed count*/
  296.  smScriptEnabled = 4,                /*Script enabled flag*/
  297.  smScriptRight = 6,                    /*Right to left flag*/
  298.  smScriptJust = 8,                    /*Justification flag*/
  299.  smScriptRedraw = 10,                /*Word redraw flag*/
  300.  smScriptSysFond = 12,                /*Preferred system font*/
  301.  smScriptAppFond = 14,                /*Preferred Application font*/
  302.  smScriptBundle = 16,                /*Beginning of itlb verbs*/
  303.  smScriptNumber = 16,                /*Script itl0 id*/
  304.  smScriptDate = 18,                    /*Script itl1 id*/
  305.  smScriptSort = 20,                    /*Script itl2 id*/
  306.  smScriptFlags = 22,                /*flags word*/
  307.  smScriptToken = 24,                /*Script itl4 id*/
  308.  smScriptEncoding = 26,                /*id of optional itl5, if present*/
  309.  smScriptLang = 28                    /*Current language for script*/
  310. };
  311. enum {
  312.  smScriptNumDate = 30,                /*Script Number/Date formats.*/
  313.  smScriptKeys = 32,                    /*Script KCHR id*/
  314.  smScriptIcon = 34,                    /*ID # of SICN or kcs#/kcs4/kcs8 suite*/
  315.  smScriptPrint = 36,                /*Script printer action routine*/
  316.  smScriptTrap = 38,                    /*Trap entry pointer*/
  317.  smScriptCreator = 40,                /*Script file creator*/
  318.  smScriptFile = 42,                    /*Script file name*/
  319.  smScriptName = 44,                    /*Script name*/
  320.  
  321. /* There is a hole here for old Kanji private verbs 46-76 
  322.  
  323.  New for System 7.0: */
  324.  smScriptMonoFondSize = 78,            /*default monospace FOND (hi) & size (lo)*/
  325.  smScriptPrefFondSize = 80,            /*preferred FOND (hi) & size (lo)*/
  326.  smScriptSmallFondSize = 82,        /*default small FOND (hi) & size (lo)*/
  327.  smScriptSysFondSize = 84,            /*default system FOND (hi) & size (lo)*/
  328.  smScriptAppFondSize = 86,            /*default app FOND (hi) & size (lo)*/
  329.  smScriptHelpFondSize = 88,            /*default Help Mgr FOND (hi) & size (lo)*/
  330.  smScriptValidStyles = 90,            /*mask of valid styles for script*/
  331.  smScriptAliasStyle = 92,            /*style (set) to use for aliases*/
  332.  
  333. /* Negative verbs for KeyScript */
  334.  smKeyNextScript = -1,                /* Switch to next available script */
  335.  smKeySysScript = -2,                /* Switch to the system script */
  336.  smKeySwapScript = -3,                /* Switch to previously-used script */
  337.  
  338. /* New for System 7.0: */
  339.  smKeyNextKybd = -4                    /* Switch to next keyboard in current keyscript */
  340. };
  341. enum {
  342.  smKeySwapKybd = -5,                /* Switch to previously-used keyboard in current keyscript */
  343.  
  344.  smKeyDisableKybds = -6,            /* Disable keyboards not in system or Roman script */
  345.  smKeyEnableKybds = -7,                /* Re-enable keyboards for all enabled scripts */
  346.  smKeyToggleInline = -8,            /* Toggle inline input for current keyscript */
  347.  smKeyToggleDirection = -9,            /* Toggle default line direction (TESysJust) */
  348.  smKeyNextInputMethod = -10,        /* Switch to next input method in current keyscript */
  349.  smKeySwapInputMethod = -11,        /* Switch to last-used input method in current keyscript */
  350.  
  351.  smKeyDisableKybdSwitch = -12,        /* Disable switching from the current keyboard */
  352.  
  353. smKeySetDirLeftRight = -15,            /* Set default line dir to left-right, align left */    /*<43>*/
  354. smKeySetDirRightLeft = -16,            /* Set default line dir to right-left, align right */    /*<43>*/
  355. smKeyRoman = -17,                    /* Set keyscript to Roman. Does nothing if Roman-only
  356.                                         system, unlike KeyScript(smRoman) which forces
  357.                                         an update to current default Roman keyboard */        /*<55>*/
  358.  
  359.  
  360. /* Bits in the smScriptFlags word
  361. (bits above 7 are non-static) */
  362.  smsfIntellCP = 0,                    /*Script has intelligent cut & paste*/
  363.  smsfSingByte = 1,                    /*Script has only single bytes*/
  364.  smsfNatCase = 2,                    /*Native chars have upper & lower case*/
  365.  smsfContext = 3,                    /*Script is contextual*/
  366.  smsfNoForceFont = 4,                /*Script will not force characters*/
  367.  smsfB0Digits = 5,                    /*Script has alternate digits at B0-B9*/
  368.  smsfAutoInit = 6,                    /*Auto initialize the script*/
  369.  smsfUnivExt = 7,                    /*Script is handled by universal extension*/            /*<43>*/
  370.  smsfForms = 13,                    /*Uses contextual forms for letters*/
  371.  smsfLigatures = 14,                /*Uses contextual ligatures*/
  372.  smsfReverse = 15,                    /*Reverses native text, right-left*/
  373.  
  374. /* Bits in the smGenFlags long.
  375. First (high-order) byte is set from itlc flags byte. */
  376.  smfShowIcon = 31,                    /*Show icon even if only one script*/
  377.  smfDualCaret = 30,                    /*Use dual caret for mixed direction text*/
  378.  smfNameTagEnab = 29,                /*Reserved for internal use*/
  379.  smfUseAssocFontInfo = 28,            /*Use the associated font info for FontMetrics calls */    /*<48>*/
  380.  
  381. /* Bits in the itlcFlags byte.
  382.  */
  383.  itlcShowIcon = 7,                    /*Show icon even if only one script*/
  384.  itlcDualCaret = 6,                    /*Use dual caret for mixed direction text*/
  385.  
  386. /* Bits in the itlcSysFlags word.
  387.  */
  388.  itlcSysDirection = 15,                /*System direction - left to right/right to left*/
  389. };
  390. enum {
  391.  
  392. /* Roman script constants 
  393.  
  394.  The following are here for backward compatibility, but should not be used. 
  395.  This information should be obtained using GetScript. */
  396.  romanSysFond = 0x3FFF,                /*system font id number*/
  397.  romanAppFond = 3,                    /*application font id number*/
  398.  romanFlags = 0x0007,                /*roman settings*/
  399.  
  400. /* Script Manager font equates. */
  401.  smFondStart = 0x4000,                /*start from 16K*/
  402.  smFondEnd = 0xC000,                /*past end of range at 48K*/
  403.  
  404. /* Miscellaneous font equates. */
  405.  smUprHalfCharSet = 0x80,            /*first char code in top half of std char set*/
  406.  
  407. /* Character Set Extensions */
  408.  diaeresisUprY = 0xD9,
  409.  fraction = 0xDA,
  410.  intlCurrency = 0xDB,
  411.  leftSingGuillemet = 0xDC,
  412.  rightSingGuillemet = 0xDD,
  413.  fiLigature = 0xDE,
  414.  flLigature = 0xDF,
  415.  dblDagger = 0xE0,
  416.  centeredDot = 0xE1,
  417.  baseSingQuote = 0xE2,
  418.  baseDblQuote = 0xE3,
  419.  perThousand = 0xE4,
  420.  circumflexUprA = 0xE5
  421. };
  422. enum {
  423.  circumflexUprE = 0xE6,
  424.  acuteUprA = 0xE7,
  425.  diaeresisUprE = 0xE8,
  426.  graveUprE = 0xE9,
  427.  acuteUprI = 0xEA,
  428.  circumflexUprI = 0xEB,
  429.  diaeresisUprI = 0xEC,
  430.  graveUprI = 0xED,
  431.  acuteUprO = 0xEE,
  432.  circumflexUprO = 0xEF,
  433.  appleLogo = 0xF0,
  434.  graveUprO = 0xF1,
  435.  acuteUprU = 0xF2,
  436.  circumflexUprU = 0xF3,
  437.  graveUprU = 0xF4,
  438.  dotlessLwrI = 0xF5,
  439.  circumflex = 0xF6,
  440.  tilde = 0xF7,
  441.  macron = 0xF8,
  442.  breveMark = 0xF9
  443. };
  444. enum {
  445.  overDot = 0xFA,
  446.  ringMark = 0xFB,
  447.  cedilla = 0xFC,
  448.  doubleAcute = 0xFD,
  449.  ogonek = 0xFE,
  450.  hachek = 0xFF,
  451.  
  452. /* String2Date status values */
  453.  fatalDateTime = 0x8000,            /*String2Date and String2Time mask to a fatal error*/
  454.  longDateFound = 1,                    /*String2Date mask to long date found*/
  455.  leftOverChars = 2,                    /*String2Date & Time mask to warn of left over characters*/
  456.  sepNotIntlSep = 4,                    /*String2Date & Time mask to warn of non-standard separators*/
  457.  fieldOrderNotIntl = 8,                /*String2Date & Time mask to warn of non-standard field order*/
  458.  extraneousStrings = 16,            /*String2Date & Time mask to warn of unparsable strings in text*/
  459.  tooManySeps = 32,                    /*String2Date & Time mask to warn of too many separators*/
  460.  sepNotConsistent = 64,                /*String2Date & Time mask to warn of inconsistent separators*/
  461.  tokenErr = 0x8100,                    /*String2Date & Time mask for 'tokenizer err encountered'*/
  462.  cantReadUtilities = 0x8200,
  463.  dateTimeNotFound = 0x8400,
  464.  dateTimeInvalid = 0x8800,
  465.  
  466. /* TokenType values */
  467.  tokenIntl = 4,                        /*the itl resource number of the tokenizer*/
  468.  tokenEmpty = -1                    /*used internally as an empty flag*/
  469. };
  470. enum {
  471.  tokenUnknown = 0,                    /*chars that do not match a defined token type*/
  472.  tokenWhite = 1,                    /*white space*/
  473.  tokenLeftLit = 2,                    /*literal begin*/
  474.  tokenRightLit = 3,                    /*literal end*/
  475.  tokenAlpha = 4,                    /*alphabetic*/
  476.  tokenNumeric = 5,                    /*numeric*/
  477.  tokenNewLine = 6,                    /*new line*/
  478.  tokenLeftComment = 7,                /*open comment*/
  479.  tokenRightComment = 8,                /*close comment*/
  480.  tokenLiteral = 9,                    /*literal*/
  481.  tokenEscape = 10,                    /*character escape (e.g. '\' in "\n", "\t")*/
  482.  tokenAltNum = 11,                    /*alternate number (e.g. $B0-B9 in Arabic,Hebrew)*/
  483.  tokenRealNum = 12,                    /*real number*/
  484.  tokenAltReal = 13,                    /*alternate real number*/
  485.  tokenReserve1 = 14,                /*reserved*/
  486.  tokenReserve2 = 15,                /*reserved*/
  487.  tokenLeftParen = 16,                /*open parenthesis*/
  488.  tokenRightParen = 17,                /*close parenthesis*/
  489.  tokenLeftBracket = 18,                /*open square bracket*/
  490.  tokenRightBracket = 19                /*close square bracket*/
  491. };
  492. enum {
  493.  tokenLeftCurly = 20,                /*open curly bracket*/
  494.  tokenRightCurly = 21,                /*close curly bracket*/
  495.  tokenLeftEnclose = 22,                /*open guillemet*/
  496.  tokenRightEnclose = 23,            /*close guillemet*/
  497.  tokenPlus = 24,
  498.  tokenMinus = 25,
  499.  tokenAsterisk = 26,                /*times/multiply*/
  500.  tokenDivide = 27,
  501.  tokenPlusMinus = 28,                /*plus or minus symbol*/
  502.  tokenSlash = 29,
  503.  tokenBackSlash = 30,
  504.  tokenLess = 31,                    /*less than symbol*/
  505.  tokenGreat = 32,                    /*greater than symbol*/
  506.  tokenEqual = 33,
  507.  tokenLessEqual2 = 34,                /*less than or equal, 2 characters (e.g. <=)*/
  508.  tokenLessEqual1 = 35,                /*less than or equal, 1 character*/
  509.  tokenGreatEqual2 = 36,                /*greater than or equal, 2 characters (e.g. >=)*/
  510.  tokenGreatEqual1 = 37,                /*greater than or equal, 1 character*/
  511.  token2Equal = 38,                    /*double equal (e.g. ==)*/
  512.  tokenColonEqual = 39                /*colon equal*/
  513. };
  514. enum {
  515.  tokenNotEqual = 40,                /*not equal, 1 character*/
  516.  tokenLessGreat = 41,                /*less/greater, Pascal not equal (e.g. <>)*/
  517.  tokenExclamEqual = 42,                /*exclamation equal, C not equal (e.g. !=)*/
  518.  tokenExclam = 43,                    /*exclamation point*/
  519.  tokenTilde = 44,                    /*centered tilde*/
  520.  tokenComma = 45,
  521.  tokenPeriod = 46,
  522.  tokenLeft2Quote = 47,                /*open double quote*/
  523.  tokenRight2Quote = 48,                /*close double quote*/
  524.  tokenLeft1Quote = 49,                /*open single quote*/
  525.  tokenRight1Quote = 50,                /*close single quote*/
  526.  token2Quote = 51,                    /*double quote*/
  527.  token1Quote = 52,                    /*single quote*/
  528.  tokenSemicolon = 53,
  529.  tokenPercent = 54,
  530.  tokenCaret = 55,
  531.  tokenUnderline = 56,
  532.  tokenAmpersand = 57,
  533.  tokenAtSign = 58,
  534.  tokenBar = 59                        /*vertical bar*/
  535. };
  536. enum {
  537.  tokenQuestion = 60,
  538.  tokenPi = 61,                        /*lower-case pi*/
  539.  tokenRoot = 62,                    /*square root symbol*/
  540.  tokenSigma = 63,                    /*capital sigma*/
  541.  tokenIntegral = 64,                /*integral sign*/
  542.  tokenMicro = 65,
  543.  tokenCapPi = 66,                    /*capital pi*/
  544.  tokenInfinity = 67,
  545.  tokenColon = 68,
  546.  tokenHash = 69,                    /*e.g. #*/
  547.  tokenDollar = 70,
  548.  tokenNoBreakSpace = 71,            /*non-breaking space*/
  549.  tokenFraction = 72,
  550.  tokenIntlCurrency = 73,
  551.  tokenLeftSingGuillemet = 74,
  552.  tokenRightSingGuillemet = 75,
  553.  tokenPerThousand = 76,
  554.  tokenEllipsis = 77,
  555.  tokenCenterDot = 78,
  556.  tokenNil = 127
  557. };
  558. enum {
  559.  delimPad = -2,
  560.  
  561. /* obsolete, misspelled token names kept for backward compatibility */
  562.  tokenTilda = 44,
  563.  tokenCarat = 55,
  564.  
  565. /* the NumberParts indices */
  566.  tokLeftQuote = 1,
  567.  tokRightQuote = 2,
  568.  tokLeadPlacer = 3,
  569.  tokLeader = 4,
  570.  tokNonLeader = 5,
  571.  tokZeroLead = 6,
  572.  tokPercent = 7,
  573.  tokPlusSign = 8,
  574.  tokMinusSign = 9,
  575.  tokThousands = 10,
  576.  tokSeparator = 12,                    /*11 is a reserved field*/
  577.  tokEscape = 13,
  578.  tokDecPoint = 14,
  579.  tokEPlus = 15,
  580.  tokEMinus = 16,
  581.  tokMaxSymbols = 31,
  582.  
  583.  curNumberPartsVersion = 1            /*current version of NumberParts record*/
  584. };
  585. enum {
  586.  fVNumber = 0,                        /*first version of NumFormatString*/
  587.  
  588. /* Date equates */
  589.  smallDateBit = 31,                    /*Restrict valid date/time to range of Time global*/
  590.  togChar12HourBit = 30,                /*If toggling hour by char, accept hours 1..12 only*/
  591.  togCharZCycleBit = 29,                /*Modifier for togChar12HourBit: accept hours 0..11 only*/
  592.  togDelta12HourBit = 28,            /*If toggling hour up/down, restrict to 12-hour range (am/pm)*/
  593.  genCdevRangeBit = 27,                /*Restrict date/time to range used by genl CDEV*/
  594.  validDateFields = -1,
  595.  maxDateField = 10,
  596.  
  597.  eraMask = 0x0001,
  598.  yearMask = 0x0002,
  599.  monthMask = 0x0004,
  600.  dayMask = 0x0008,
  601.  hourMask = 0x0010,
  602.  minuteMask = 0x0020,
  603.  secondMask = 0x0040,
  604.  dayOfWeekMask = 0x0080,
  605.  dayOfYearMask = 0x0100,
  606.  weekOfYearMask = 0x0200,
  607.  pmMask = 0x0400,
  608.  dateStdMask = 0x007F                /*default for ValidDate flags and ToggleDate TogglePB.togFlags*/
  609. };
  610. enum {
  611.  
  612. /* Toggle results */
  613.  toggleUndefined = 0,
  614.  toggleOK = 1,
  615.  toggleBadField = 2,
  616.  toggleBadDelta = 3,
  617.  toggleBadChar = 4,
  618.  toggleUnknown = 5,
  619.  toggleBadNum = 6,
  620.  toggleOutOfRange = 7,                /*synonym for toggleErr3*/
  621.  toggleErr3 = 7,
  622.  toggleErr4 = 8,
  623.  toggleErr5 = 9,
  624.  
  625. /* New constants for System 7.0:               
  626.  
  627.   Constants for truncWhere argument in TruncString and TruncText */
  628.  smTruncEnd = 0,                    /* Truncate at end */
  629.  smTruncMiddle = 0x4000,            /* Truncate in middle */
  630.  
  631. /* Constants for TruncString and TruncText results */
  632.  smNotTruncated = 0,                /* No truncation was necessary */
  633.  smTruncated = 1,                    /* Truncation performed */
  634.  smTruncErr = -1,                    /* General error */
  635.  
  636. /*Constants for styleRunPosition argument in NPortionText, NDrawJust,
  637.  NMeasureJust, NChar2Pixel, and NPixel2Char.*/
  638.  smOnlyStyleRun = 0,                /* This is the only style run on the line */
  639.  smLeftStyleRun = 1,                /* This is leftmost of multiple style runs on the line */
  640.  smRightStyleRun = 2,                /* This is rightmost of multiple style runs on the line */
  641.  smMiddleStyleRun = 3                /* There are multiple style runs on the line and this 
  642.  is neither the leftmost nor the rightmost. */
  643. };
  644.  
  645.  
  646. enum {tokenOK,tokenOverflow,stringOverflow,badDelim,badEnding,crash};
  647. typedef unsigned char TokenResults;
  648.  
  649. enum {eraField,yearField,monthField,dayField,hourField,minuteField,secondField,
  650.  dayOfWeekField,dayOfYearField,weekOfYearField,pmField,res1Field,res2Field,
  651.  res3Field};
  652. typedef unsigned char LongDateField;
  653.  
  654. enum {smBreakWord,smBreakChar,smBreakOverflow};
  655. typedef unsigned char StyledLineBreakCode;
  656.  
  657. enum {fPositive,fNegative,fZero};
  658. typedef unsigned char FormatClass;
  659.  
  660. enum {fFormatOK,fBestGuess,fOutOfSynch,fSpuriousChars,fMissingDelimiter,
  661.  fExtraDecimal,fMissingLiteral,fExtraExp,fFormatOverflow,fFormStrIsNAN,
  662.  fBadPartsTable,fExtraPercent,fExtraSeparator,fEmptyFormatString};
  663. typedef unsigned char FormatResultType;
  664.  
  665.  
  666. typedef char CharByteTable[256];
  667. typedef short ToggleResults;
  668.  
  669. struct BreakTable {
  670.  char charTypes[256];
  671.  short tripleLength;
  672.  short triples[1];
  673. };
  674.  
  675. typedef struct BreakTable BreakTable;
  676. typedef BreakTable *BreakTablePtr;
  677.  
  678. /* New NBreakTable for System 7.0: */
  679. struct NBreakTable {
  680.  signed char flags1;
  681.  signed char flags2;
  682.  short version;
  683.  short classTableOff;
  684.  short auxCTableOff;
  685.  short backwdTableOff;
  686.  short forwdTableOff;
  687.  short doBackup;
  688.  short reserved;
  689.  char charTypes[256];
  690.  short tables[1];
  691. };
  692.  
  693. typedef struct NBreakTable NBreakTable;
  694. typedef NBreakTable *NBreakTablePtr;
  695.  
  696. struct OffPair {
  697.  short offFirst;
  698.  short offSecond;
  699. };
  700.  
  701. typedef struct OffPair OffPair;
  702.  
  703.  
  704. typedef OffPair OffsetTable[3];
  705.  
  706. struct ItlcRecord {
  707.  short itlcSystem;                    /*default system script*/
  708.  short itlcReserved;                /*reserved*/
  709.  char itlcFontForce;                /*default font force flag*/
  710.  char itlcIntlForce;                /*default intl force flag*/
  711.  char itlcOldKybd;                    /*MacPlus intl keybd flag*/
  712.  char itlcFlags;                    /*general flags*/
  713.  short itlcIconOffset;                /*keyboard icon offset; not used in 7.0*/
  714.  char itlcIconSide;                    /*keyboard icon side; not used in 7.0*/
  715.  char itlcIconRsvd;                    /*rsvd for other icon info*/
  716.  short itlcRegionCode;                /*preferred verXxx code*/
  717.  short itlcSysFlags;                /*flags for setting system globals*/        /*<40>*/
  718.  char itlcReserved4[32];            /*for future use*/                            /*<40>*/
  719. };
  720.  
  721. typedef struct ItlcRecord ItlcRecord;
  722.  
  723. struct ItlbRecord {
  724.  short itlbNumber;                    /*itl0 id number*/
  725.  short itlbDate;                    /*itl1 id number*/
  726.  short itlbSort;                    /*itl2 id number*/
  727.  short itlbFlags;                    /*Script flags*/
  728.  short itlbToken;                    /*itl4 id number*/
  729.  short itlbEncoding;                /*itl5 ID # (optional; char encoding)*/
  730.  short itlbLang;                    /*current language for script */
  731.  char itlbNumRep;                    /*number representation code*/
  732.  char itlbDateRep;                    /*date representation code */
  733.  short itlbKeys;                    /*KCHR id number*/
  734.  short itlbIcon;                    /*ID # of SICN or kcs#/kcs4/kcs8 suite.*/
  735. };
  736.  
  737. typedef struct ItlbRecord ItlbRecord;
  738.  
  739. /* New ItlbExtRecord structure for System 7.0 */
  740. struct ItlbExtRecord {
  741.  ItlbRecord base;                    /*un-extended ItlbRecord*/
  742.  long itlbLocalSize;                /*size of script's local record*/
  743.  short itlbMonoFond;                /*default monospace FOND ID*/
  744.  short itlbMonoSize;                /*default monospace font size*/
  745.  short itlbPrefFond;                /*preferred FOND ID*/
  746.  short itlbPrefSize;                /*preferred font size*/
  747.  short itlbSmallFond;                /*default small FOND ID*/
  748.  short itlbSmallSize;                /*default small font size*/
  749.  short itlbSysFond;                    /*default system FOND ID*/
  750.  short itlbSysSize;                    /*default system font size*/
  751.  short itlbAppFond;                    /*default application FOND ID*/
  752.  short itlbAppSize;                    /*default application font size*/
  753.  short itlbHelpFond;                /*default Help Mgr FOND ID*/
  754.  short itlbHelpSize;                /*default Help Mgr font size*/
  755.  Style itlbValidStyles;                /*set of valid styles for script*/
  756.  Style itlbAliasStyle;                /*style (set) to mark aliases*/
  757. };
  758.  
  759. typedef struct ItlbExtRecord ItlbExtRecord;
  760.  
  761. struct MachineLocation {
  762.  Fract latitude;
  763.  Fract longitude;
  764.  union{
  765.   char dlsDelta;                    /*signed byte; daylight savings delta*/
  766.   long gmtDelta;                    /*must mask - see documentation*/
  767.   }gmtFlags;
  768. };
  769.  
  770. typedef struct MachineLocation MachineLocation;
  771.  
  772.  
  773. typedef short String2DateStatus;
  774. typedef short TokenType;
  775. typedef TokenType DelimType[2];
  776. typedef TokenType CommentType[4];
  777.  
  778. struct TokenRec {
  779.  TokenType theToken;
  780.  Ptr position;                        /*pointer into original source*/
  781.  long length;                        /*length of text in original source*/
  782.  StringPtr stringPosition;            /*Pascal/C string copy of identifier*/
  783. };
  784.  
  785. typedef struct TokenRec TokenRec;
  786. typedef TokenRec *TokenRecPtr;
  787.  
  788. struct TokenBlock {
  789.  Ptr source;                        /*pointer to stream of characters*/
  790.  long sourceLength;                    /*length of source stream*/
  791.  Ptr tokenList;                        /*pointer to array of tokens*/
  792.  long tokenLength;                    /*maximum length of TokenList*/
  793.  long tokenCount;                    /*number tokens generated by tokenizer*/
  794.  Ptr stringList;                    /*pointer to stream of identifiers*/
  795.  long stringLength;                    /*length of string list*/
  796.  long stringCount;                    /*number of bytes currently used*/
  797.  Boolean doString;                    /*make strings & put into StringList*/
  798.  Boolean doAppend;                    /*append to TokenList rather than replace*/
  799.  Boolean doAlphanumeric;            /*identifiers may include numeric*/
  800.  Boolean doNest;                    /*do comments nest?*/
  801.  TokenType leftDelims[2];
  802.  TokenType rightDelims[2];
  803.  TokenType leftComment[4];
  804.  TokenType rightComment[4];
  805.  TokenType escapeCode;                /*escape symbol code*/
  806.  TokenType decimalCode;
  807.  Handle itlResource;                /*handle to itl4 resource of current script*/
  808.  long reserved[8];                    /*must be zero!*/
  809. };
  810.  
  811. typedef struct TokenBlock TokenBlock;
  812. typedef TokenBlock *TokenBlockPtr;
  813.  
  814. struct UntokenTable {
  815.  short len;
  816.  short lastToken;
  817.  short index[256];                    /*index table; last = lastToken*/
  818. };
  819.  
  820. typedef struct UntokenTable UntokenTable;
  821. typedef UntokenTable *UntokenTablePtr, **UntokenTableHandle;
  822.  
  823. struct DateCacheRecord {
  824.  short hidden[256];                    /*only for temporary use*/
  825. };
  826.  
  827. typedef struct DateCacheRecord DateCacheRecord;
  828. typedef DateCacheRecord *DateCachePtr;
  829.  
  830.  
  831. typedef comp LongDateTime;
  832.  
  833. union LongDateCvt {
  834.  comp c;
  835.  struct {
  836.   long lHigh;
  837.   long lLow;
  838.   } hl;
  839. };
  840.  
  841. typedef union LongDateCvt LongDateCvt;
  842.  
  843. union LongDateRec {
  844.  struct {
  845.   short era;
  846.   short year;
  847.   short month;
  848.   short day;
  849.   short hour;
  850.   short minute;
  851.   short second;
  852.   short dayOfWeek;
  853.   short dayOfYear;
  854.   short weekOfYear;
  855.   short pm;
  856.   short res1;
  857.   short res2;
  858.   short res3;
  859.   } ld;
  860.  short list[14];                    /*Index by LongDateField!*/
  861.  struct {
  862.   short eraAlt;
  863.   DateTimeRec oldDate;
  864.   } od;
  865. };
  866.  
  867. typedef union LongDateRec LongDateRec;
  868.  
  869.  
  870. typedef char DateDelta;
  871.  
  872. struct TogglePB {
  873.  long togFlags;                        /*caller normally sets low word to dateStdMask=$7F*/
  874.  ResType amChars;                    /*from 'itl0', but uppercased*/
  875.  ResType pmChars;                    /*from 'itl0', but uppercased*/
  876.  long reserved[4];
  877. };
  878.  
  879. typedef struct TogglePB TogglePB;
  880.  
  881.  
  882. typedef short FormatOrder[1];
  883. typedef FormatOrder *FormatOrderPtr;
  884. typedef short FormatStatus;
  885.  
  886. union WideChar {
  887.  char a[2];                            /*0 is the high order character*/
  888.  short b;
  889. };
  890.  
  891. typedef union WideChar WideChar;
  892.  
  893. struct WideCharArr {
  894.  short size;
  895.  WideChar data[10];
  896. };
  897.  
  898. typedef struct WideCharArr WideCharArr;
  899.  
  900. struct NumFormatString {
  901.  char fLength;
  902.  char fVersion;
  903.  char data[254];                    /*private data*/
  904. };
  905.  
  906. typedef struct NumFormatString NumFormatString;
  907.  
  908. struct Itl4Rec {
  909.  short flags;                        /*reserved*/
  910.  long resourceType;                    /*contains 'itl4'*/
  911.  short resourceNum;                    /*resource ID*/
  912.  short version;                        /*version number*/
  913.  long resHeader1;                    /*reserved*/
  914.  long resHeader2;                    /*reserved*/
  915.  short numTables;                    /*number of tables, one-based*/
  916.  long mapOffset;                    /*offset to table that maps byte to token*/
  917.  long strOffset;                    /*offset to routine that copies canonical string*/
  918.  long fetchOffset;                    /*offset to routine that gets next byte of character*/
  919.  long unTokenOffset;                /*offset to table that maps token to canonical string*/
  920.  long defPartsOffset;                /*offset to default number parts table*/
  921.  long resOffset6;                    /*reserved*/
  922.  long resOffset7;                    /*reserved*/
  923.  long resOffset8;                    /*reserved*/
  924. };
  925.  
  926. typedef struct Itl4Rec Itl4Rec;
  927. typedef Itl4Rec *Itl4Ptr, **Itl4Handle;
  928.  
  929. /* New NItl4Rec for System 7.0: */
  930. struct NItl4Rec {
  931.  short flags;                        /*reserved*/
  932.  long resourceType;                    /*contains 'itl4'*/
  933.  short resourceNum;                    /*resource ID*/
  934.  short version;                        /*version number*/
  935.  short format;                        /*format code*/
  936.  short resHeader;                    /*reserved*/
  937.  long resHeader2;                    /*reserved*/
  938.  short numTables;                    /*number of tables, one-based*/
  939.  long mapOffset;                    /*offset to table that maps byte to token*/
  940.  long strOffset;                    /*offset to routine that copies canonical string*/
  941.  long fetchOffset;                    /*offset to routine that gets next byte of character*/
  942.  long unTokenOffset;                /*offset to table that maps token to canonical string*/
  943.  long defPartsOffset;                /*offset to default number parts table*/
  944.  long whtSpListOffset;                /*offset to white space code list*/
  945.  long resOffset7;                    /*reserved*/
  946.  long resOffset8;                    /*reserved*/
  947.  short resLength1;                    /*reserved*/
  948.  short resLength2;                    /*reserved*/
  949.  short resLength3;                    /*reserved*/
  950.  short unTokenLength;                /*length of untoken table*/
  951.  short defPartsLength;                /*length of default number parts table*/
  952.  short whtSpListLength;                /*length of white space code list*/
  953.  short resLength7;                    /*reserved*/
  954.  short resLength8;                    /*reserved*/
  955. };
  956.  
  957. typedef struct NItl4Rec NItl4Rec;
  958. typedef NItl4Rec *NItl4Ptr, **NItl4Handle;
  959.  
  960. struct NumberParts {
  961.  short version;
  962.  WideChar data[31];                    /*index by [tokLeftQuote..tokMaxSymbols]*/
  963.  WideCharArr pePlus;
  964.  WideCharArr peMinus;
  965.  WideCharArr peMinusPlus;
  966.  WideCharArr altNumTable;
  967.  char reserved[20];
  968. };
  969.  
  970. typedef struct NumberParts NumberParts;
  971. typedef NumberParts *NumberPartsPtr;
  972.  
  973. struct FVector {
  974.  short start;
  975.  short length;
  976. };
  977.  
  978. typedef struct FVector FVector;
  979.  
  980.  
  981. typedef FVector TripleInt[3];        /* index by [fPositive..fZero] */
  982.  
  983. struct ScriptRunStatus {
  984.  char script;
  985.  char variant;
  986. };
  987.  
  988. typedef struct ScriptRunStatus ScriptRunStatus;
  989.  
  990.  
  991. /* New types for System 7.0:                
  992.  
  993.   type for truncWhere parameter in new TruncString, TruncText */
  994. typedef short TruncCode;
  995.  
  996. /* type for styleRunPosition parameter in NPixel2Char etc. */
  997. typedef short JustStyleCode;
  998.  
  999. struct TableDirectoryRecord {
  1000.  OSType tableSignature;                /*4 byte long table name */
  1001.  unsigned long reserved;            /*Reserved for internal use */
  1002.  unsigned long tableStartOffset;    /*Table start offset in byte*/
  1003.  unsigned long tableSize;            /*Table size in byte*/
  1004.  };
  1005.  
  1006. typedef struct TableDirectoryRecord TableDirectoryRecord;
  1007.  
  1008. struct Itl5Record {
  1009.  Fixed versionNumber;                        /*itl5 resource version number */
  1010.  unsigned short numberOfTables;                /*Number of tables it contains */
  1011.  unsigned short reserved[3];                /*Reserved for internal use */
  1012.  TableDirectoryRecord tableDirectory[1];    /*Table directory records */
  1013.  };
  1014.  
  1015. typedef struct Itl5Record Itl5Record;
  1016.  
  1017. struct RuleBasedTrslRecord {
  1018.  short sourceType;                    /*Transliterate target type for the LHS of the rule */
  1019.  short targetType;                    /*Transliterate target type for the RHS of the rule */
  1020.  short formatNumber;                /*Transliterate resource format number */
  1021.  short propertyFlag;                /*Transliterate property flags */
  1022.  short numberOfRules;                /*Number of rules following this field */
  1023.  };
  1024.  
  1025. #ifdef __cplusplus
  1026. extern "C" {
  1027. #endif
  1028. pascal short FontScript(void)
  1029.  = {0x2F3C,0x8200,0x0000,0xA8B5}; 
  1030. pascal short IntlScript(void)
  1031.  = {0x2F3C,0x8200,0x0002,0xA8B5}; 
  1032. pascal void KeyScript(short code)
  1033.  = {0x2F3C,0x8002,0x0004,0xA8B5}; 
  1034. pascal short Font2Script(short fontNumber)
  1035.  = {0x2F3C,0x8202,0x0006,0xA8B5}; 
  1036. pascal long GetEnvirons(short verb)
  1037.  = {0x2F3C,0x8402,0x0008,0xA8B5}; 
  1038. pascal OSErr SetEnvirons(short verb,long param)
  1039.  = {0x2F3C,0x8206,0x000A,0xA8B5}; 
  1040. pascal long GetScript(short script,short verb)
  1041.  = {0x2F3C,0x8404,0x000C,0xA8B5}; 
  1042. pascal OSErr SetScript(short script,short verb,long param)
  1043.  = {0x2F3C,0x8208,0x000E,0xA8B5}; 
  1044. pascal short CharByte(Ptr textBuf,short textOffset)
  1045.  = {0x2F3C,0x8206,0x0010,0xA8B5}; 
  1046. pascal short CharType(Ptr textBuf,short textOffset)
  1047.  = {0x2F3C,0x8206,0x0012,0xA8B5}; 
  1048. pascal short Pixel2Char(Ptr textBuf,short textLen,short slop,short pixelWidth,
  1049.  Boolean *leadingEdge)
  1050.  = {0x2F3C,0x820E,0x0014,0xA8B5}; 
  1051. pascal short Char2Pixel(Ptr textBuf,short textLen,short slop,short offset,
  1052.  short direction)
  1053.  = {0x2F3C,0x820C,0x0016,0xA8B5}; 
  1054. pascal OSErr Transliterate(Handle srcHandle,Handle dstHandle,short target,
  1055.  long srcMask)
  1056.  = {0x2F3C,0x820E,0x0018,0xA8B5}; 
  1057. pascal void FindWord(Ptr textPtr,short textLength,short offset,Boolean leadingEdge,
  1058.  BreakTablePtr breaks,OffsetTable offsets)
  1059.  = {0x2F3C,0x8012,0x001A,0xA8B5}; 
  1060. pascal void HiliteText(Ptr textPtr,short textLength,short firstOffset,short secondOffset,
  1061.  OffsetTable offsets)
  1062.  = {0x2F3C,0x800E,0x001C,0xA8B5}; 
  1063. pascal void DrawJust(Ptr textPtr,short textLength,short slop)
  1064.  = {0x2F3C,0x8008,0x001E,0xA8B5}; 
  1065. pascal void MeasureJust(Ptr textPtr,short textLength,short slop,Ptr charLocs)
  1066.  = {0x2F3C,0x800C,0x0020,0xA8B5}; 
  1067. pascal Boolean ParseTable(CharByteTable table)
  1068.  = {0x2F3C,0x8204,0x0022,0xA8B5}; 
  1069. pascal short GetDefFontSize(void)
  1070.  = {0x3EB8,0x0BA8,0x6604,0x3EBC,0x000C}; 
  1071. #define GetSysFont() (* (short*) 0x0BA6)
  1072. #define GetAppFont() (* (short*) 0x0984)
  1073. #define GetSysJust() (* (short*) 0x0BAC)
  1074. pascal void SetSysJust(short newJust)
  1075.  = {0x31DF,0x0BAC}; 
  1076. pascal void ReadLocation(MachineLocation *loc)
  1077.  = {0x205F,0x203C,0x000C,0x00E4,0xA051}; 
  1078. pascal void WriteLocation(const MachineLocation *loc)
  1079.  = {0x205F,0x203C,0x000C,0x00E4,0xA052}; 
  1080. pascal void UprText(Ptr textPtr,short len)
  1081.  = {0x301F,0x205F,0xA054}; 
  1082. pascal void LwrText(Ptr textPtr,short len)
  1083.  = {0x301F,0x205F,0xA056}; 
  1084.  
  1085. /*  New for 7.0  */
  1086. pascal void LowerText(Ptr textPtr,short len)
  1087.  = {0x301F,0x205F,0xA056}; 
  1088. pascal void StripText(Ptr textPtr,short len)
  1089.  = {0x301F,0x205F,0xA256}; 
  1090. pascal void UpperText(Ptr textPtr,short len)
  1091.  = {0x301F,0x205F,0xA456}; 
  1092. pascal void StripUpperText(Ptr textPtr,short len)
  1093.  = {0x301F,0x205F,0xA656}; 
  1094.  
  1095. pascal StyledLineBreakCode StyledLineBreak(Ptr textPtr,long textLen,long textStart,
  1096.  long textEnd,long flags,Fixed *textWidth,long *textOffset)
  1097.  = {0x2F3C,0x821C,0xFFFE,0xA8B5}; 
  1098. pascal void GetFormatOrder(FormatOrderPtr ordering,short firstFormat,short lastFormat,
  1099.  Boolean lineRight,Ptr rlDirProc,Ptr dirParam)
  1100.  = {0x2F3C,0x8012,0xFFFC,0xA8B5}; 
  1101. pascal TokenResults IntlTokenize(TokenBlockPtr tokenParam)
  1102.  = {0x2F3C,0x8204,0xFFFA,0xA8B5}; 
  1103. pascal OSErr InitDateCache(DateCachePtr theCache)
  1104.  = {0x2F3C,0x8204,0xFFF8,0xA8B5}; 
  1105. pascal String2DateStatus String2Date(Ptr textPtr,long textLen,DateCachePtr theCache,
  1106.  long *lengthUsed,LongDateRec *dateTime)
  1107.  = {0x2F3C,0x8214,0xFFF6,0xA8B5}; 
  1108. pascal String2DateStatus String2Time(Ptr textPtr,long textLen,DateCachePtr theCache,
  1109.  long *lengthUsed,LongDateRec *dateTime)
  1110.  = {0x2F3C,0x8214,0xFFF4,0xA8B5}; 
  1111. pascal void LongDate2Secs(const LongDateRec *lDate,LongDateTime *lSecs)
  1112.  = {0x2F3C,0x8008,0xFFF2,0xA8B5}; 
  1113. pascal void LongSecs2Date(LongDateTime *lSecs,LongDateRec *lDate)
  1114.  = {0x2F3C,0x8008,0xFFF0,0xA8B5}; 
  1115. pascal ToggleResults ToggleDate(LongDateTime *lSecs,LongDateField field,
  1116.  DateDelta delta,short ch,const TogglePB *params)
  1117.  = {0x2F3C,0x820E,0xFFEE,0xA8B5}; 
  1118. pascal FormatStatus Str2Format(ConstStr255Param inString,const NumberParts *partsTable,
  1119.  NumFormatString *outString)
  1120.  = {0x2F3C,0x820C,0xFFEC,0xA8B5}; 
  1121. pascal FormatStatus Format2Str(const NumFormatString *myCanonical,const NumberParts *partsTable,
  1122.  Str255 outString,TripleInt positions)
  1123.  = {0x2F3C,0x8210,0xFFEA,0xA8B5}; 
  1124. pascal FormatStatus FormatX2Str(extended80 x,const NumFormatString *myCanonical,
  1125.  const NumberParts *partsTable,Str255 outString)
  1126.  = {0x2F3C,0x8210,0xFFE8,0xA8B5}; 
  1127. pascal FormatStatus FormatStr2X(ConstStr255Param source,const NumFormatString *myCanonical,
  1128.  const NumberParts *partsTable,extended80 *x)
  1129.  = {0x2F3C,0x8210,0xFFE6,0xA8B5}; 
  1130. pascal Fixed PortionText(Ptr textPtr,long textLen)
  1131.  = {0x2F3C,0x8408,0x0024,0xA8B5}; 
  1132. pascal ScriptRunStatus FindScriptRun(Ptr textPtr,long textLen,long *lenUsed)
  1133.  = {0x2F3C,0x820C,0x0026,0xA8B5}; 
  1134. pascal long VisibleLength(Ptr textPtr,long textLen)
  1135.  = {0x2F3C,0x8408,0x0028,0xA8B5}; 
  1136. pascal short ValidDate(const LongDateRec *vDate,long flags,LongDateTime *newSecs)
  1137.  = {0x2F3C,0x820C,0xFFE4,0xA8B5}; 
  1138.  
  1139. /*  New for 7.0  */
  1140. pascal void NFindWord(Ptr textPtr,short textLength,short offset,Boolean leadingEdge,
  1141.  NBreakTablePtr nbreaks,OffsetTable offsets)
  1142.  = {0x2F3C,0x8012,0xFFE2,0xA8B5}; 
  1143. pascal short TruncString(short width,Str255 theString,TruncCode truncWhere)
  1144.  = {0x2F3C,0x8208,0xFFE0,0xA8B5}; 
  1145. pascal short TruncText(short width,Ptr textPtr,short *length,TruncCode truncWhere)
  1146.  = {0x2F3C,0x820C,0xFFDE,0xA8B5}; 
  1147. pascal short ReplaceText(Handle baseText,Handle substitutionText,Str15 key)
  1148.  = {0x2F3C,0x820C,0xFFDC,0xA8B5}; 
  1149. pascal short NPixel2Char(Ptr textBuf,long textLen,Fixed slop,Fixed pixelWidth,
  1150.  Boolean *leadingEdge,Fixed *widthRemaining,JustStyleCode styleRunPosition,
  1151.  Point numer,Point denom)
  1152.  = {0x2F3C,0x8222,0x002E,0xA8B5}; 
  1153. pascal short NChar2Pixel(Ptr textBuf,long textLen,Fixed slop,long offset,
  1154.  short direction,JustStyleCode styleRunPosition,Point numer,Point denom)
  1155.  = {0x2F3C,0x821C,0x0030,0xA8B5}; 
  1156. pascal void NDrawJust(Ptr textPtr,long textLength,Fixed slop,JustStyleCode styleRunPosition,
  1157.  Point numer,Point denom)
  1158.  = {0x2F3C,0x8016,0x0032,0xA8B5}; 
  1159. pascal void NMeasureJust(Ptr textPtr,long textLength,Fixed slop,Ptr charLocs,
  1160.  JustStyleCode styleRunPosition,Point numer,Point denom)
  1161.  = {0x2F3C,0x801A,0x0034,0xA8B5}; 
  1162. pascal Fixed NPortionText(Ptr textPtr,long textLen,JustStyleCode styleRunPosition,
  1163.  Point numer,Point denom)
  1164.  = {0x2F3C,0x8412,0x0036,0xA8B5}; 
  1165.  
  1166. /*  New for 7.1  */                                                                    /*<46>*/
  1167.  
  1168. pascal Ptr SCGetScriptRoutineAddr(short selector,Boolean Before,ScriptCode script)
  1169.     = {0x2F3C,0xC404,0x0038,0xA8B5}; 
  1170.  
  1171. pascal void SCSetScriptRoutineAddr(short selector,Boolean Before,Ptr routineAddr,ScriptCode script)
  1172.     = {0x2F3C,0xC008,0x003A,0xA8B5}; 
  1173.  
  1174. pascal Ptr SCGetQDPatchAddr(short trapNum,Boolean Before,Boolean forPrinting,ScriptCode script)
  1175.     = {0x2F3C,0xC406,0x003C,0xA8B5}; 
  1176.  
  1177. pascal void SCSetQDPatchAddr(short trapNum,Boolean Before,Boolean forPrinting,Ptr routineAddr,ScriptCode script)
  1178.     = {0x2F3C,0xC00A,0x003E,0xA8B5}; 
  1179.  
  1180. #ifdef __cplusplus
  1181. }
  1182. #endif
  1183.  
  1184. #endif
  1185.